#ifndef ENTRADA_H_INCLUDED
#define ENTRADA_H_INCLUDED
#include "grafo.h"

typedef struct{
    int numInstancias;
    Grafo* grafo;
}Entrada;

//Abre um arquivo
FILE* abreArquivo(char* nomeArquivo, char* modo);
//Fecha um arquivo
void fechaArquivo(FILE* arquivo);
//Executa a logica do TP. Recebe a entrada e coordena o processamento.
void processaEntrada(char *argv[]);
//Imprime a qtd de instancias do problemas em um arquivo de saida
void imprimeNumInstanciasArq(FILE* arqSaida, Entrada* entrada);
//Imprime a qtd de instancias do problema
void imprimeNumInstancias(Entrada* entrada);
//Retorna o numero de instancias de uma entrada dada
int getNumInstancias(FILE* arqEntrada,Entrada* nova);
//Retorna 1 instancias dada na entrada. Uma instancia e considerada sendo 2 matrizes que seram usadas para o calculo do produto de kronecker
void getInstancia(FILE* arqEntrada,Entrada* nova);
//Cria uma nova entrada
Entrada* novaEntrada(FILE* entrada);
//Libera uma entrada definida
void liberaEntrada(Entrada* entrada);
//Esvazia as instancias armazenadas na estrutura de entrada
void liberaInstancias(Entrada* entrada);

#endif // ENTRADA_H_INCLUDED
